package jmine.tec.hydra.api;

import java.util.List;

import jmine.tec.executionlog.domain.ExecutionLog;
import jmine.tec.executionlog.domain.ExecutionLogItem;

/**
 * Ação que registra uma página de serviços que falhou
 * 
 * @author lundberg
 */
public interface FailedServicePageAction extends HydraAction {

    /**
     * Prepara a action para ser salva e retorn a si mesma
     * 
     * @param executionLog executionLog
     * @param failedFrom failedFrom, inclusive
     * @param failedTo failedTo, inclusive
     * @return FailedServicePageAction
     */
    FailedServicePageAction prepare(ExecutionLog executionLog, ExecutionLogItem failedFrom, ExecutionLogItem failedTo);

    /**
     * ExecutionLog que contém o registro da falha
     * 
     * @return ExecutionLog
     */
    ExecutionLog getExecutionLog();

    /**
     * Primeiro item do execution log que corresponde à falha
     * 
     * @return ExecutionLogItem
     */
    ExecutionLogItem getFailedFrom();

    /**
     * Último item do execution log que corresponde à falha
     * 
     * @return ExecutionLogItem
     */
    ExecutionLogItem getFailedTo();

    /**
     * Obtém a lista de itens que falharam
     * 
     * @return List de ExecutionLogItem
     */
    List<ExecutionLogItem> getFailedItems();
}